1. Field of the Invention
The invention generally relates to code analysis, and, more particularly, to uncoverage analysis of code.
2. Description of the Related Art
Software Quality Engineering groups evaluate their work on the basis of “code coverage” metrics which are one way of describing how effectively the target program is being tested. Typical numbers such as “80% coverage” are reported, which indicate how much of the code in the target program is actually being exercised by the test suite. Although useful as a relative progress indicator, such numbers do not provide meaningful clues on how to increase coverage.
Various code coverage measurement tools exist, such as tcov(1). Coverage tools are essentially profilers that capture data on code run with test suites. The coverage tools indicate which portions of the code are executed, so implicitly indicate which portions of code are not covered. Code coverage tools generally work by instrumenting the code somewhere in the compilation process. Conventional code coverage tools can produce overall coverage percentage reports. Conventional code coverage tools may also mark up the source code to indicate which basic blocks and/or functions are covered or not covered.
However, since these tools do not generally have access to the whole program view, they cannot reliably detect the structure of uncovered code, and thus cannot provide full information on the extent of uncovered code guarded by any particular function.